{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### RMPSProp算法\n",
    "在AdaGrad优化算法中提到，因为调整学习率时分母上的变量St一直在累加按元素平方的小批量随机梯度，所以目标函数自变量每个元素的学习率在迭代过程中一直在降低（或不变）。因此，当学习率在迭代早期降得较快且当前解依然不佳时，AdaGrad算法在迭代后期由于学习率过小，可能较难找到一个有用的解。为了解决这一问题，RMSProp算法对AdaGrad算法做了一点小小的修改。"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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p1G3yLpyWLl3hO5PO0L38RI8vuBGajOZcsv3JEACU5HAhz744IMPpmLGmWcSIIGpSuAUdm2+iLpNFSMTAG4WXENHsGPfNDR8vuyGy/+Frmfx0kNPoi5w8yneH0DHs8dRvnqZ/zskIyoT/VG6l361DPf8egUa7PM7IwpnfBxf6G5F6+mHUDxDhG77DM74xMdQSYAESGCsBChEjJUg/ZMACZAACZAACZAACZDAFCPAMxFTrMCZXRIgARIgARIgARIgARIYKwEKEWMlSP8kQAIkQAIkQAIkQAIkMMUIUIiYYgXO7JIACZAACZAACZAACZDAWAlQiBgrQfonARIgARIgARIgARIggSlGgELEFCtwZpcESIAESIAESIAESIAExkqAQsRYCdI/CZAACZAACZAACZAACUwxAhQipliBM7skQAIkQAIkQAIkQAIkMFYCFCLGSpD+SYAESIAESIAESIAESGCKEaAQMcUKnNklARIgARIgARIgARIggbESoBAxVoL0TwIkQAIkQAIkQAIkQAJTjACFiClW4MwuCZAACZAACZAACZAACYyVAIWIsRKkfxIgARIgARIgARIgARKYYgQoREyxAmd2SYAESIAESIAESIAESGCsBChEjJUg/ZMACZAACZAACZAACZDAFCNAIWKKFTizSwIkQAIkQAIkQAIkQAJjJUAhYqwE6Z8ESIAESIAESIAESIAEphgBChFTrMCZXRIgARIgARIgARIgARIYKwEKEWMlSP8kQAIkQAIkQAIkQAIkMMUIUIiYYgXO7JIACZAACZAACZAACZDAWAlQiBgrQfonARIgARIgARIgARIggSlGgELEFCtwZpcESIAESIAESIAESIAExkqAQsRYCdI/CZAACZAACZAACZAACUwxAhQipliBM7skQAIkQAIkQAIkQAIkMFYCFCLGSpD+SYAESIAESIAESIAESGCKEaAQMcUKnNklARIgARIgARIgARIggbESoBAxVoL0TwIkQAIkQAIkQAIkQAJTjACFiClW4MwuCZAACZAACZAACZAACYyVAIWIsRKkfxIgARIgARIgARIgARKYYgQoREyxAmd2SYAESIAESIAESIAESGCsBChEjJUg/ZMACZAACZAACZAACZDAFCNAIWKKFTizSwIkQAIkQAIkQAIkQAJjJUAhYqwE6Z8ESIAESIAESIAESIAEphgB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r7IuTqZ7y3ckQAIkQAIkQAIkQAIkQAIjIJAzIaJjY33mA84AKhut1B1LoXxjD+q2bEXivGUfMM5evQcrd9ajfEkV2vcnMdt9X4I1+/dgjftMAwmQAAmQAAmQAAmQAAmQwHgTyNmZiMxqR4BvR0GdiXgLK31CQYbsitBx+BH0zX9VCR8ZXEe8zqD6FOGDViRAAiRAAiRAAiRAAiRAAn4COduJ8AebxZM6EyGqTPVoyOjcmfzPTaJPXftagr79SSBCEPEJKhJuhJuM0dEBCZAACZAACZAACZAACZBALIGcCRGjUmeCUUeK+7aEc/PT/cvir3BFDxqW9AQyuB7lbbZVFVbajzSTAAmQAAmQAAmQAAmQAAmMmkDOhIgR387kS3I+lm5rwuCS9Sg/16RvZ3KugEXjVvSl/Wid/5xE3E6ELzo+kAAJkAAJkAAJkAAJkAAJjJpAzoSIUafA9ah3JRapA9RiKcLBHusQtetQGdR1sG0DytybcScCEDfZCDr+WPhEAiRAAiRAAiRAAiRAAiQQJJCzg9Uj/ticLyX2B+vk/EMj0LoeJsyRTP5DOxG+ePhAAiRAAiRAAiRAAiRAAiQwVgI524nIZqKvJvgmxc71rvpRBIc96JthXgLYtgdLnUfxV77RvKvCNxoH8UVnF8LY+n+DZyLMW97OZEjwlwRIgARIgARIgARIgARGSyAHOxGjjZr+SIAESIAESIAESIAESIAEJiOBX5qMiWaaSYAESIAESIAESIAESIAEJo4AhYiJY8+YSYAESIAESIAESIAESGBSEqAQMSmLjYkmARIgARIgARIgARIggYkjQCFi4tgzZhIgARIgARIgARIgARKYlAQoREzKYmOiSYAESIAESIAESIAESGDiCFCImDj2jJkESIAESIAESIAESIAEJiUBChGTstiYaBIgARIgARIgARIgARKYOAIUIiaOPWMmARIgARIgARIgARIggUlJgELEpCw2JpoESIAESIAESIAESIAEJo4AhYiJY8+YSYAESIAESIAESIAESGBSEqAQMSmLjYkmARIgARIgARIgARIggYkjQCFi4tgzZhIgARIgARIgARIgARKYlAQoREzKYmOiSYAESIAESIAESIAESGDiCFCImDj2jJkESIAESIAESIAESIAEJiUBChGTstiYaBIgARIgARIgARIgARKYOAIUIiaOPWMmARIgARIgARIgARIggUlJgELEpCw2JpoESIAESIAESIAESIAEJo4AhYiJY8+YSYAESIAESIAESIAESGBSEqAQMSmLjYkmARIgARIgARIgARIggYkjQCFi4tgzZhIgARIgARIgARIgARKYlAQoREzKYmOiSYAESIAESIAESIAESGDiCFCImDj2jJkESIAESIAESIAESIAEJiUBChGTstiYaBIgARIgARIgARIgARKYOAIUIiaOPWMmARIgARIgARIgARIggUlJgELEpCw2JpoESIAESIAESIAESIAEJo4AhYiJY8+YSYAESIAESIAESIAESGBSEqAQMSmLjYkmARIgARIgARIgARIggYkjQCFi4tgzZhIgARIgARIgARIgARKYlAQoREzKYmOiSYAESIAESIAESIAESGDiCFCImDj2jJkESIAESIAESIAESIAEJiUBChGTstiYaBIgARIgARIgARIgARKYOAIUIiaOPWMmARIgARIgARIgARIggUlJgELEpCw2JpoESIAESIAESIAESIAEJo4AhYiJY8+YSYAESIAESIAESIAESGBSEqAQMSmLjYkmARIgARIgARIgARIggYkj8MsTFzVjJgESIAESuGkJvHMU7bt/iKP/UoFVnxxG3+mLGPrJMMq+uA7ViZs218wYCZAACUwZAtyJmDJFzYySAAmQwPUjcOZHw6hc9QkUHO7Bm/fXouG/JrHq45fQfXT4+iWCMZEACZAACYwbAQoR44aWAZMACZDA1CVQWF2FB0+/hs6yKixSOw9X0d8/gMTdH566UJhzEiABEriJCFCd6SYqTGaFBEiABG4YAnnTcOYnx1E6txp3qESdxev/VIQ5DdOuaxKvnBvA8aFLAKbhnoIHUDjj+sZ/XTPLyEiABEjgOhLgTsR1hM2oSIAEJojAlasTFPFUjvYyBl+7hLKH8jWE84M48WulePCe68PkvTd68MyaVuw6ZtSnrmLolRQ2rGlD5xuXr08iGAsJkAAJ3MQEuBNxExcus0YCJCAEBtC+fRiPb6hwVsRJ5foQGET/T+bj0Qd0bFd+OoC+uZ9A4XWIfOjAs9g1+Bg2bKvCHbfYEZaisuYyTu5pw+ZzSWxa5Ag4thOaSYAESIAEsiJAISIrTHREAiQwHgRktXjXtr3oPHsZV/JuQ+Wi38Gqjw9hx+Yu9F27DdWffxotNWOb6F05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gARIYFIToBAxqYuPiScBEiCB8SPw1Nd2ou9/n0LrpifxyGytP/bj/tN44W+/j6+u/7+8iN8dwsmhy8g7dwoHjh3FC4fOovqpb2HDx6cBb/dgbSvQ/CdV3rcbPJ/adL4HnUNVWOp+CE5bX+hqQfW5ZehbHfxmSDAAPpMACZAACVxvAr90vSNkfCRAAiRAApODwNeeWo1PL16Arr//oZvg7/1ND/5b8r+4z8BV9P3FU2j40hFc+VQtVm34A2x4+C4kfl2fDbjy2gDOPFQQL0BYIQWN0+9/AIlLl6E+xRF8yWcSIAESIIEJJUAhYkLxM3ISIAESuLEJfLp6AfZ/vxf//LP/F2/+88/w9z/4RyQsNSZgGkofW4zZdw/ipbZ2bF73TZxY3Iw657rWM28cR+UD9wLXruLKtRHm9eFabL/vCDa1/wDd30uh/UfDIwyAzkmABEiABMaLANWZxosswyUBEiCBm4TA1/9sD2791V8BPvQhLP3NT6Bg1swsc3YR3X/4p/jXLz6NxadfQu/HFmOh+ZK0HcLbR9H7Thkqc/GdCDtcmkmABEiABMaNAIWIcUPLgEmABEjg5iDw5tmfYeX6FvzSh34J3//en48oU6+nvoxOVCBRUIa6j4/ihqYRxUbHJEACJEAC14sAhYjrRZrxkAAJkMAkJrB64zP4T489isWL5k/iXDDpJEACJEACuSJAISJXJBkOCZAACZAACZAACZAACUwRAjxYPUUKmtkkARIgARIgARIgARIggVwRoBCRK5IMhwRIgARIgARIgARIgASmCAEKEVOkoJlNEiABEiABEiABEiABEsgVAQoRuSLJcEiABEiABEiABEiABEhgihCgEDFFCprZJAESIAESIAESIAESIIFcEaAQkSuSDIcESIAESIAESIAESIAEpggBChFTpKCZTRIgARIgARIgARIgARLIFQEKEbkiyXBIgARIgARIgARIgARIYIoQoBAxRQqa2SQBEiABEiABEiABEiCBXBGgEJErkgyHBEiABEiABEiABEiABKYIAQoRU6SgmU0SIAESIAESIAESIAESyBUBChG5IslwSIAESIAESIAESIAESGCKEKAQMUUKmtkkARIgARIgARIgARIggVwRoBCRK5IMhwRIgARIgARIgARIgASmCAEKEVOkoJlNEiABEiABEiABEiABEsgVAQoRuSLJcEiA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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 算法\n",
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "import torch\n",
    "import sys\n",
    "import numpy as np\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "def rmsprop_2d(x1, x2, s1, s2):\n",
    "    g1, g2, eps = 0.2 * x1, 4* x2, 1e-6\n",
    "    s1 = gamma * s1 + (1 - gamma) * g1 ** 2\n",
    "    s2 = gamma * s2 + (1 - gamma) * g2 ** 2\n",
    "    x1 -= eta / math.sqrt(s1 + eps) * g1\n",
    "    x2 -= eta / math.sqrt(s2 + eps) * g2\n",
    "    return x1, x2, s1, s2\n",
    "\n",
    "def f_2d(x1, x2):\n",
    "    return 0.1 * x1 ** 2 ++ 2 * x2 **2\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "from matplotlib import pyplot as plt\n",
    "from IPython import display\n",
    "\n",
    "def use_svg_display():\n",
    "    # 用矢量图显示\n",
    "    display.set_matplotlib_formats('svg')\n",
    "\n",
    "def set_figsize(figsize=(3.5, 2.5)):\n",
    "    use_svg_display()\n",
    "    # 设置图的尺寸\n",
    "    plt.rcParams['figure.figsize'] = figsize\n",
    "    \n",
    "def train_2d(trainer):\n",
    "    x1, x2, s1, s2 = -5, -2, 0, 0\n",
    "    results = [(x1, x2)]\n",
    "    for i in range(20):\n",
    "        x1, x2, s1, s2 = trainer(x1, x2, s1, s2)\n",
    "        results.append((x1, x2))\n",
    "    print('epoch %d, x1 %f, x2 %f' % (i + 1, x1, x2))\n",
    "    return results\n",
    "\n",
    "def show_trace_2d(f, results):\n",
    "    plt.plot(*zip(*results), '-o', color='#ff7f0e')\n",
    "    x1, x2 = np.meshgrid(np.arange(-5.5, 1.0, 0.1), np.arange(-3.0, 1.0, 0.1))\n",
    "    plt.contour(x1, x2, f(x1, x2), colors='#1f77b4')\n",
    "    plt.xlabel('x1')\n",
    "    plt.ylabel('x2')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.010599, x2 0.000000\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta, gamma = 0.4, 0.9\n",
    "show_trace_2d(f_2d, train_2d(rmsprop_2d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 从零开始实现\n",
    "接下来按照RMSProp算法中的公式实现该算法。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_data():\n",
    "    data = np.genfromtxt('Datasets/airfoil_self_noise.dat', delimiter='\\t')\n",
    "    data = (data - data.mean(axis=0)) / data.std(axis=0)\n",
    "    return torch.tensor(data[:1500, :-1], dtype=torch.float32), torch.tensor(data[:1500, -1], dtype=torch.float32) # 前1500个样本(每个样本5个特征)\n",
    "\n",
    "\n",
    "features, labels = get_data()\n",
    "\n",
    "def init_rmsprop_states():\n",
    "    s_w = torch.zeros((features.shape[1], 1), dtype=torch.float32)\n",
    "    s_b = torch.zeros(1, dtype=torch.float32)\n",
    "    return (s_w, s_b)\n",
    "\n",
    "def  rmsprop(params, states, hyperparams):\n",
    "    gamma, eps = hyperparams['gamma'], 1e-6\n",
    "    for p, s in zip(params, states):\n",
    "        s.data = gamma * s.data + (1 - gamma) * (p.grad.data)**2\n",
    "        p.data -= hyperparams['lr']*p.grad.data/torch.sqrt(s + eps)\n",
    "        \n",
    "    "
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "import time\n",
    "\n",
    "def linreg(X, w, b):\n",
    "    return torch.mm(X, w) + b\n",
    "\n",
    "def squared_loss(y_hat, y):\n",
    "    # 注意这里返回的是向量, 另外, pytorch里的MSELoss并没有除以 2\n",
    "    return (y_hat - y.view(y_hat.size()))**2 / 2\n",
    "\n",
    "def train_model(optimizer_fn, states, hyperparams, features, labels,\n",
    "              batch_size=10, num_epochs=2):\n",
    "    # 初始化模型\n",
    "    net, loss = linreg, squared_loss\n",
    "\n",
    "    w = torch.nn.Parameter(torch.tensor(np.random.normal(0, 0.01, size=(features.shape[1], 1)), dtype=torch.float32),\n",
    "                           requires_grad=True)\n",
    "    b = torch.nn.Parameter(torch.zeros(1, dtype=torch.float32), requires_grad=True)\n",
    "\n",
    "    def eval_loss():\n",
    "        return loss(net(features, w, b), labels).mean().item()\n",
    "\n",
    "    ls = [eval_loss()]\n",
    "    data_iter = torch.utils.data.DataLoader(torch.utils.data.TensorDataset(features, labels), batch_size, shuffle=True)\n",
    "\n",
    "    for _ in range(num_epochs):\n",
    "        start = time.time()\n",
    "        for batch_i, (X, y) in enumerate(data_iter):\n",
    "            l = loss(net(X, w, b), y).mean()  # 使用平均损失\n",
    "\n",
    "            # 梯度清零\n",
    "            if w.grad is not None:\n",
    "                w.grad.data.zero_()\n",
    "                b.grad.data.zero_()\n",
    "\n",
    "            l.backward()\n",
    "            optimizer_fn([w, b], states, hyperparams)  # 迭代模型参数\n",
    "            if (batch_i + 1) * batch_size % 100 == 0:\n",
    "                ls.append(eval_loss())  # 每100个样本记录下当前训练误差\n",
    "    # 打印结果和作图\n",
    "    print('loss: %f, %f sec per epoch' % (ls[-1], time.time() - start))\n",
    "    set_figsize()\n",
    "    plt.plot(np.linspace(0, num_epochs, len(ls)), ls)\n",
    "    plt.xlabel('epoch')\n",
    "    plt.ylabel('loss')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss: 0.243406, 0.099765 sec per epoch\n"
     ]
    },
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
       "<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n",
       "<svg height=\"180.65625pt\" version=\"1.1\" viewBox=\"0 0 252.64375 180.65625\" width=\"252.64375pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
       " <defs>\r\n",
       "  <style type=\"text/css\">\r\n",
       "*{stroke-linecap:butt;stroke-linejoin:round;}\r\n",
       "  </style>\r\n",
       " </defs>\r\n",
       " <g id=\"figure_1\">\r\n",
       "  <g id=\"patch_1\">\r\n",
       "   <path d=\"M 0 180.65625 \r\n",
       "L 252.64375 180.65625 \r\n",
       "L 252.64375 0 \r\n",
       "L 0 0 \r\n",
       "z\r\n",
       "\" style=\"fill:none;\"/>\r\n",
       "  </g>\r\n",
       "  <g id=\"axes_1\">\r\n",
       "   <g id=\"patch_2\">\r\n",
       "    <path d=\"M 50.14375 143.1 \r\n",
       "L 245.44375 143.1 \r\n",
       "L 245.44375 7.2 \r\n",
       "L 50.14375 7.2 \r\n",
       "z\r\n",
       "\" style=\"fill:#ffffff;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_1\">\r\n",
       "    <g id=\"xtick_1\">\r\n",
       "     <g id=\"line2d_1\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L 0 3.5 \r\n",
       "\" id=\"mc7b22c65fd\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"59.021023\" xlink:href=\"#mc7b22c65fd\" y=\"143.1\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_1\">\r\n",
       "      <!-- 0.0 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 31.78125 66.40625 \r\n",
       "Q 24.171875 66.40625 20.328125 58.90625 \r\n",
       "Q 16.5 51.421875 16.5 36.375 \r\n",
       "Q 16.5 21.390625 20.328125 13.890625 \r\n",
       "Q 24.171875 6.390625 31.78125 6.390625 \r\n",
       "Q 39.453125 6.390625 43.28125 13.890625 \r\n",
       "Q 47.125 21.390625 47.125 36.375 \r\n",
       "Q 47.125 51.421875 43.28125 58.90625 \r\n",
       "Q 39.453125 66.40625 31.78125 66.40625 \r\n",
       "z\r\n",
       "M 31.78125 74.21875 \r\n",
       "Q 44.046875 74.21875 50.515625 64.515625 \r\n",
       "Q 56.984375 54.828125 56.984375 36.375 \r\n",
       "Q 56.984375 17.96875 50.515625 8.265625 \r\n",
       "Q 44.046875 -1.421875 31.78125 -1.421875 \r\n",
       "Q 19.53125 -1.421875 13.0625 8.265625 \r\n",
       "Q 6.59375 17.96875 6.59375 36.375 \r\n",
       "Q 6.59375 54.828125 13.0625 64.515625 \r\n",
       "Q 19.53125 74.21875 31.78125 74.21875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-48\"/>\r\n",
       "       <path d=\"M 10.6875 12.40625 \r\n",
       "L 21 12.40625 \r\n",
       "L 21 0 \r\n",
       "L 10.6875 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-46\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(51.06946 157.698438)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_2\">\r\n",
       "     <g id=\"line2d_2\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"103.407386\" xlink:href=\"#mc7b22c65fd\" y=\"143.1\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_2\">\r\n",
       "      <!-- 0.5 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 10.796875 72.90625 \r\n",
       "L 49.515625 72.90625 \r\n",
       "L 49.515625 64.59375 \r\n",
       "L 19.828125 64.59375 \r\n",
       "L 19.828125 46.734375 \r\n",
       "Q 21.96875 47.46875 24.109375 47.828125 \r\n",
       "Q 26.265625 48.1875 28.421875 48.1875 \r\n",
       "Q 40.625 48.1875 47.75 41.5 \r\n",
       "Q 54.890625 34.8125 54.890625 23.390625 \r\n",
       "Q 54.890625 11.625 47.5625 5.09375 \r\n",
       "Q 40.234375 -1.421875 26.90625 -1.421875 \r\n",
       "Q 22.3125 -1.421875 17.546875 -0.640625 \r\n",
       "Q 12.796875 0.140625 7.71875 1.703125 \r\n",
       "L 7.71875 11.625 \r\n",
       "Q 12.109375 9.234375 16.796875 8.0625 \r\n",
       "Q 21.484375 6.890625 26.703125 6.890625 \r\n",
       "Q 35.15625 6.890625 40.078125 11.328125 \r\n",
       "Q 45.015625 15.765625 45.015625 23.390625 \r\n",
       "Q 45.015625 31 40.078125 35.4375 \r\n",
       "Q 35.15625 39.890625 26.703125 39.890625 \r\n",
       "Q 22.75 39.890625 18.8125 39.015625 \r\n",
       "Q 14.890625 38.140625 10.796875 36.28125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-53\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(95.455824 157.698438)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_3\">\r\n",
       "     <g id=\"line2d_3\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"147.79375\" xlink:href=\"#mc7b22c65fd\" y=\"143.1\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_3\">\r\n",
       "      <!-- 1.0 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 12.40625 8.296875 \r\n",
       "L 28.515625 8.296875 \r\n",
       "L 28.515625 63.921875 \r\n",
       "L 10.984375 60.40625 \r\n",
       "L 10.984375 69.390625 \r\n",
       "L 28.421875 72.90625 \r\n",
       "L 38.28125 72.90625 \r\n",
       "L 38.28125 8.296875 \r\n",
       "L 54.390625 8.296875 \r\n",
       "L 54.390625 0 \r\n",
       "L 12.40625 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-49\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(139.842187 157.698438)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_4\">\r\n",
       "     <g id=\"line2d_4\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"192.180114\" xlink:href=\"#mc7b22c65fd\" y=\"143.1\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_4\">\r\n",
       "      <!-- 1.5 -->\r\n",
       "      <g transform=\"translate(184.228551 157.698438)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_5\">\r\n",
       "     <g id=\"line2d_5\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"236.566477\" xlink:href=\"#mc7b22c65fd\" y=\"143.1\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_5\">\r\n",
       "      <!-- 2.0 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 19.1875 8.296875 \r\n",
       "L 53.609375 8.296875 \r\n",
       "L 53.609375 0 \r\n",
       "L 7.328125 0 \r\n",
       "L 7.328125 8.296875 \r\n",
       "Q 12.9375 14.109375 22.625 23.890625 \r\n",
       "Q 32.328125 33.6875 34.8125 36.53125 \r\n",
       "Q 39.546875 41.84375 41.421875 45.53125 \r\n",
       "Q 43.3125 49.21875 43.3125 52.78125 \r\n",
       "Q 43.3125 58.59375 39.234375 62.25 \r\n",
       "Q 35.15625 65.921875 28.609375 65.921875 \r\n",
       "Q 23.96875 65.921875 18.8125 64.3125 \r\n",
       "Q 13.671875 62.703125 7.8125 59.421875 \r\n",
       "L 7.8125 69.390625 \r\n",
       "Q 13.765625 71.78125 18.9375 73 \r\n",
       "Q 24.125 74.21875 28.421875 74.21875 \r\n",
       "Q 39.75 74.21875 46.484375 68.546875 \r\n",
       "Q 53.21875 62.890625 53.21875 53.421875 \r\n",
       "Q 53.21875 48.921875 51.53125 44.890625 \r\n",
       "Q 49.859375 40.875 45.40625 35.40625 \r\n",
       "Q 44.1875 33.984375 37.640625 27.21875 \r\n",
       "Q 31.109375 20.453125 19.1875 8.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-50\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(228.614915 157.698438)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"text_6\">\r\n",
       "     <!-- epoch -->\r\n",
       "     <defs>\r\n",
       "      <path d=\"M 56.203125 29.59375 \r\n",
       "L 56.203125 25.203125 \r\n",
       "L 14.890625 25.203125 \r\n",
       "Q 15.484375 15.921875 20.484375 11.0625 \r\n",
       "Q 25.484375 6.203125 34.421875 6.203125 \r\n",
       "Q 39.59375 6.203125 44.453125 7.46875 \r\n",
       "Q 49.3125 8.734375 54.109375 11.28125 \r\n",
       "L 54.109375 2.78125 \r\n",
       "Q 49.265625 0.734375 44.1875 -0.34375 \r\n",
       "Q 39.109375 -1.421875 33.890625 -1.421875 \r\n",
       "Q 20.796875 -1.421875 13.15625 6.1875 \r\n",
       "Q 5.515625 13.8125 5.515625 26.8125 \r\n",
       "Q 5.515625 40.234375 12.765625 48.109375 \r\n",
       "Q 20.015625 56 32.328125 56 \r\n",
       "Q 43.359375 56 49.78125 48.890625 \r\n",
       "Q 56.203125 41.796875 56.203125 29.59375 \r\n",
       "z\r\n",
       "M 47.21875 32.234375 \r\n",
       "Q 47.125 39.59375 43.09375 43.984375 \r\n",
       "Q 39.0625 48.390625 32.421875 48.390625 \r\n",
       "Q 24.90625 48.390625 20.390625 44.140625 \r\n",
       "Q 15.875 39.890625 15.1875 32.171875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-101\"/>\r\n",
       "      <path d=\"M 18.109375 8.203125 \r\n",
       "L 18.109375 -20.796875 \r\n",
       "L 9.078125 -20.796875 \r\n",
       "L 9.078125 54.6875 \r\n",
       "L 18.109375 54.6875 \r\n",
       "L 18.109375 46.390625 \r\n",
       "Q 20.953125 51.265625 25.265625 53.625 \r\n",
       "Q 29.59375 56 35.59375 56 \r\n",
       "Q 45.5625 56 51.78125 48.09375 \r\n",
       "Q 58.015625 40.1875 58.015625 27.296875 \r\n",
       "Q 58.015625 14.40625 51.78125 6.484375 \r\n",
       "Q 45.5625 -1.421875 35.59375 -1.421875 \r\n",
       "Q 29.59375 -1.421875 25.265625 0.953125 \r\n",
       "Q 20.953125 3.328125 18.109375 8.203125 \r\n",
       "z\r\n",
       "M 48.6875 27.296875 \r\n",
       "Q 48.6875 37.203125 44.609375 42.84375 \r\n",
       "Q 40.53125 48.484375 33.40625 48.484375 \r\n",
       "Q 26.265625 48.484375 22.1875 42.84375 \r\n",
       "Q 18.109375 37.203125 18.109375 27.296875 \r\n",
       "Q 18.109375 17.390625 22.1875 11.75 \r\n",
       "Q 26.265625 6.109375 33.40625 6.109375 \r\n",
       "Q 40.53125 6.109375 44.609375 11.75 \r\n",
       "Q 48.6875 17.390625 48.6875 27.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-112\"/>\r\n",
       "      <path d=\"M 30.609375 48.390625 \r\n",
       "Q 23.390625 48.390625 19.1875 42.75 \r\n",
       "Q 14.984375 37.109375 14.984375 27.296875 \r\n",
       "Q 14.984375 17.484375 19.15625 11.84375 \r\n",
       "Q 23.34375 6.203125 30.609375 6.203125 \r\n",
       "Q 37.796875 6.203125 41.984375 11.859375 \r\n",
       "Q 46.1875 17.53125 46.1875 27.296875 \r\n",
       "Q 46.1875 37.015625 41.984375 42.703125 \r\n",
       "Q 37.796875 48.390625 30.609375 48.390625 \r\n",
       "z\r\n",
       "M 30.609375 56 \r\n",
       "Q 42.328125 56 49.015625 48.375 \r\n",
       "Q 55.71875 40.765625 55.71875 27.296875 \r\n",
       "Q 55.71875 13.875 49.015625 6.21875 \r\n",
       "Q 42.328125 -1.421875 30.609375 -1.421875 \r\n",
       "Q 18.84375 -1.421875 12.171875 6.21875 \r\n",
       "Q 5.515625 13.875 5.515625 27.296875 \r\n",
       "Q 5.515625 40.765625 12.171875 48.375 \r\n",
       "Q 18.84375 56 30.609375 56 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-111\"/>\r\n",
       "      <path d=\"M 48.78125 52.59375 \r\n",
       "L 48.78125 44.1875 \r\n",
       "Q 44.96875 46.296875 41.140625 47.34375 \r\n",
       "Q 37.3125 48.390625 33.40625 48.390625 \r\n",
       "Q 24.65625 48.390625 19.8125 42.84375 \r\n",
       "Q 14.984375 37.3125 14.984375 27.296875 \r\n",
       "Q 14.984375 17.28125 19.8125 11.734375 \r\n",
       "Q 24.65625 6.203125 33.40625 6.203125 \r\n",
       "Q 37.3125 6.203125 41.140625 7.25 \r\n",
       "Q 44.96875 8.296875 48.78125 10.40625 \r\n",
       "L 48.78125 2.09375 \r\n",
       "Q 45.015625 0.34375 40.984375 -0.53125 \r\n",
       "Q 36.96875 -1.421875 32.421875 -1.421875 \r\n",
       "Q 20.0625 -1.421875 12.78125 6.34375 \r\n",
       "Q 5.515625 14.109375 5.515625 27.296875 \r\n",
       "Q 5.515625 40.671875 12.859375 48.328125 \r\n",
       "Q 20.21875 56 33.015625 56 \r\n",
       "Q 37.15625 56 41.109375 55.140625 \r\n",
       "Q 45.0625 54.296875 48.78125 52.59375 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-99\"/>\r\n",
       "      <path d=\"M 54.890625 33.015625 \r\n",
       "L 54.890625 0 \r\n",
       "L 45.90625 0 \r\n",
       "L 45.90625 32.71875 \r\n",
       "Q 45.90625 40.484375 42.875 44.328125 \r\n",
       "Q 39.84375 48.1875 33.796875 48.1875 \r\n",
       "Q 26.515625 48.1875 22.3125 43.546875 \r\n",
       "Q 18.109375 38.921875 18.109375 30.90625 \r\n",
       "L 18.109375 0 \r\n",
       "L 9.078125 0 \r\n",
       "L 9.078125 75.984375 \r\n",
       "L 18.109375 75.984375 \r\n",
       "L 18.109375 46.1875 \r\n",
       "Q 21.34375 51.125 25.703125 53.5625 \r\n",
       "Q 30.078125 56 35.796875 56 \r\n",
       "Q 45.21875 56 50.046875 50.171875 \r\n",
       "Q 54.890625 44.34375 54.890625 33.015625 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-104\"/>\r\n",
       "     </defs>\r\n",
       "     <g transform=\"translate(132.565625 171.376563)scale(0.1 -0.1)\">\r\n",
       "      <use xlink:href=\"#DejaVuSans-101\"/>\r\n",
       "      <use x=\"61.523438\" xlink:href=\"#DejaVuSans-112\"/>\r\n",
       "      <use x=\"125\" xlink:href=\"#DejaVuSans-111\"/>\r\n",
       "      <use x=\"186.181641\" xlink:href=\"#DejaVuSans-99\"/>\r\n",
       "      <use x=\"241.162109\" xlink:href=\"#DejaVuSans-104\"/>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_2\">\r\n",
       "    <g id=\"ytick_1\">\r\n",
       "     <g id=\"line2d_6\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L -3.5 0 \r\n",
       "\" id=\"mfe9538a1b6\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#mfe9538a1b6\" y=\"133.005825\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_7\">\r\n",
       "      <!-- 0.25 -->\r\n",
       "      <g transform=\"translate(20.878125 136.805044)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_2\">\r\n",
       "     <g id=\"line2d_7\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#mfe9538a1b6\" y=\"107.562223\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_8\">\r\n",
       "      <!-- 0.30 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 40.578125 39.3125 \r\n",
       "Q 47.65625 37.796875 51.625 33 \r\n",
       "Q 55.609375 28.21875 55.609375 21.1875 \r\n",
       "Q 55.609375 10.40625 48.1875 4.484375 \r\n",
       "Q 40.765625 -1.421875 27.09375 -1.421875 \r\n",
       "Q 22.515625 -1.421875 17.65625 -0.515625 \r\n",
       "Q 12.796875 0.390625 7.625 2.203125 \r\n",
       "L 7.625 11.71875 \r\n",
       "Q 11.71875 9.328125 16.59375 8.109375 \r\n",
       "Q 21.484375 6.890625 26.8125 6.890625 \r\n",
       "Q 36.078125 6.890625 40.9375 10.546875 \r\n",
       "Q 45.796875 14.203125 45.796875 21.1875 \r\n",
       "Q 45.796875 27.640625 41.28125 31.265625 \r\n",
       "Q 36.765625 34.90625 28.71875 34.90625 \r\n",
       "L 20.21875 34.90625 \r\n",
       "L 20.21875 43.015625 \r\n",
       "L 29.109375 43.015625 \r\n",
       "Q 36.375 43.015625 40.234375 45.921875 \r\n",
       "Q 44.09375 48.828125 44.09375 54.296875 \r\n",
       "Q 44.09375 59.90625 40.109375 62.90625 \r\n",
       "Q 36.140625 65.921875 28.71875 65.921875 \r\n",
       "Q 24.65625 65.921875 20.015625 65.03125 \r\n",
       "Q 15.375 64.15625 9.8125 62.3125 \r\n",
       "L 9.8125 71.09375 \r\n",
       "Q 15.4375 72.65625 20.34375 73.4375 \r\n",
       "Q 25.25 74.21875 29.59375 74.21875 \r\n",
       "Q 40.828125 74.21875 47.359375 69.109375 \r\n",
       "Q 53.90625 64.015625 53.90625 55.328125 \r\n",
       "Q 53.90625 49.265625 50.4375 45.09375 \r\n",
       "Q 46.96875 40.921875 40.578125 39.3125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-51\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(20.878125 111.361442)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-51\"/>\r\n",
       "       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_3\">\r\n",
       "     <g id=\"line2d_8\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#mfe9538a1b6\" y=\"82.118621\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_9\">\r\n",
       "      <!-- 0.35 -->\r\n",
       "      <g transform=\"translate(20.878125 85.91784)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-51\"/>\r\n",
       "       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_4\">\r\n",
       "     <g id=\"line2d_9\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#mfe9538a1b6\" y=\"56.675019\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_10\">\r\n",
       "      <!-- 0.40 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 37.796875 64.3125 \r\n",
       "L 12.890625 25.390625 \r\n",
       "L 37.796875 25.390625 \r\n",
       "z\r\n",
       "M 35.203125 72.90625 \r\n",
       "L 47.609375 72.90625 \r\n",
       "L 47.609375 25.390625 \r\n",
       "L 58.015625 25.390625 \r\n",
       "L 58.015625 17.1875 \r\n",
       "L 47.609375 17.1875 \r\n",
       "L 47.609375 0 \r\n",
       "L 37.796875 0 \r\n",
       "L 37.796875 17.1875 \r\n",
       "L 4.890625 17.1875 \r\n",
       "L 4.890625 26.703125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-52\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(20.878125 60.474238)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\r\n",
       "       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_5\">\r\n",
       "     <g id=\"line2d_10\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"50.14375\" xlink:href=\"#mfe9538a1b6\" y=\"31.231417\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_11\">\r\n",
       "      <!-- 0.45 -->\r\n",
       "      <g transform=\"translate(20.878125 35.030636)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\r\n",
       "       <use x=\"159.033203\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"text_12\">\r\n",
       "     <!-- loss -->\r\n",
       "     <defs>\r\n",
       "      <path d=\"M 9.421875 75.984375 \r\n",
       "L 18.40625 75.984375 \r\n",
       "L 18.40625 0 \r\n",
       "L 9.421875 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-108\"/>\r\n",
       "      <path d=\"M 44.28125 53.078125 \r\n",
       "L 44.28125 44.578125 \r\n",
       "Q 40.484375 46.53125 36.375 47.5 \r\n",
       "Q 32.28125 48.484375 27.875 48.484375 \r\n",
       "Q 21.1875 48.484375 17.84375 46.4375 \r\n",
       "Q 14.5 44.390625 14.5 40.28125 \r\n",
       "Q 14.5 37.15625 16.890625 35.375 \r\n",
       "Q 19.28125 33.59375 26.515625 31.984375 \r\n",
       "L 29.59375 31.296875 \r\n",
       "Q 39.15625 29.25 43.1875 25.515625 \r\n",
       "Q 47.21875 21.78125 47.21875 15.09375 \r\n",
       "Q 47.21875 7.46875 41.1875 3.015625 \r\n",
       "Q 35.15625 -1.421875 24.609375 -1.421875 \r\n",
       "Q 20.21875 -1.421875 15.453125 -0.5625 \r\n",
       "Q 10.6875 0.296875 5.421875 2 \r\n",
       "L 5.421875 11.28125 \r\n",
       "Q 10.40625 8.6875 15.234375 7.390625 \r\n",
       "Q 20.0625 6.109375 24.8125 6.109375 \r\n",
       "Q 31.15625 6.109375 34.5625 8.28125 \r\n",
       "Q 37.984375 10.453125 37.984375 14.40625 \r\n",
       "Q 37.984375 18.0625 35.515625 20.015625 \r\n",
       "Q 33.0625 21.96875 24.703125 23.78125 \r\n",
       "L 21.578125 24.515625 \r\n",
       "Q 13.234375 26.265625 9.515625 29.90625 \r\n",
       "Q 5.8125 33.546875 5.8125 39.890625 \r\n",
       "Q 5.8125 47.609375 11.28125 51.796875 \r\n",
       "Q 16.75 56 26.8125 56 \r\n",
       "Q 31.78125 56 36.171875 55.265625 \r\n",
       "Q 40.578125 54.546875 44.28125 53.078125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-115\"/>\r\n",
       "     </defs>\r\n",
       "     <g transform=\"translate(14.798437 84.807812)rotate(-90)scale(0.1 -0.1)\">\r\n",
       "      <use xlink:href=\"#DejaVuSans-108\"/>\r\n",
       "      <use x=\"27.783203\" xlink:href=\"#DejaVuSans-111\"/>\r\n",
       "      <use x=\"88.964844\" xlink:href=\"#DejaVuSans-115\"/>\r\n",
       "      <use x=\"141.064453\" xlink:href=\"#DejaVuSans-115\"/>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"line2d_11\">\r\n",
       "    <path clip-path=\"url(#p4d09d5c210)\" d=\"M 59.021023 13.377273 \r\n",
       "L 64.939205 61.58675 \r\n",
       "L 70.857386 87.719587 \r\n",
       "L 76.775568 97.803113 \r\n",
       "L 82.69375 114.383356 \r\n",
       "L 88.611932 120.731345 \r\n",
       "L 94.530114 125.200638 \r\n",
       "L 100.448295 129.796533 \r\n",
       "L 106.366477 132.063543 \r\n",
       "L 112.284659 134.103494 \r\n",
       "L 118.202841 134.887986 \r\n",
       "L 124.121023 134.458118 \r\n",
       "L 130.039205 134.637367 \r\n",
       "L 135.957386 135.165743 \r\n",
       "L 141.875568 133.398568 \r\n",
       "L 147.79375 134.252912 \r\n",
       "L 153.711932 135.217996 \r\n",
       "L 159.630114 135.24308 \r\n",
       "L 165.548295 134.720391 \r\n",
       "L 171.466477 135.505353 \r\n",
       "L 177.384659 135.578876 \r\n",
       "L 183.302841 134.781159 \r\n",
       "L 189.221023 135.456877 \r\n",
       "L 195.139205 134.825215 \r\n",
       "L 201.057386 135.836873 \r\n",
       "L 206.975568 136.233725 \r\n",
       "L 212.89375 136.607989 \r\n",
       "L 218.811932 136.922727 \r\n",
       "L 224.730114 134.938904 \r\n",
       "L 230.648295 135.706585 \r\n",
       "L 236.566477 136.361146 \r\n",
       "\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_3\">\r\n",
       "    <path d=\"M 50.14375 143.1 \r\n",
       "L 50.14375 7.2 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_4\">\r\n",
       "    <path d=\"M 245.44375 143.1 \r\n",
       "L 245.44375 7.2 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_5\">\r\n",
       "    <path d=\"M 50.14375 143.1 \r\n",
       "L 245.44375 143.1 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_6\">\r\n",
       "    <path d=\"M 50.14375 7.2 \r\n",
       "L 245.44375 7.2 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "  </g>\r\n",
       " </g>\r\n",
       " <defs>\r\n",
       "  <clipPath id=\"p4d09d5c210\">\r\n",
       "   <rect height=\"135.9\" width=\"195.3\" x=\"50.14375\" y=\"7.2\"/>\r\n",
       "  </clipPath>\r\n",
       " </defs>\r\n",
       "</svg>\r\n"
      ],
      "text/plain": [
       "<Figure size 252x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_model(rmsprop, init_rmsprop_states(), {'lr':0.01, 'gamma':0.9},\n",
    "           features, labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 简洁实现\n",
    "通过名称为RMSprop的优化器方法，我们便可使用PyTorch提供的RMSProp算法来训练模型。注意，超参数γ通过alpha指定。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch import nn\n",
    "\n",
    "def train_model_pytorch(optimizer_fn, optimizer_hyperparams, features, labels,\n",
    "                    batch_size=10, num_epochs=2):\n",
    "    # 初始化模型\n",
    "    net = nn.Sequential(\n",
    "        nn.Linear(features.shape[-1], 1)\n",
    "    )\n",
    "    loss = nn.MSELoss()\n",
    "    optimizer = optimizer_fn(net.parameters(), **optimizer_hyperparams)\n",
    "\n",
    "    def eval_loss():\n",
    "        return loss(net(features).view(-1), labels).item() / 2\n",
    "\n",
    "    ls = [eval_loss()]\n",
    "    data_iter = torch.utils.data.DataLoader(\n",
    "        torch.utils.data.TensorDataset(features, labels), batch_size, shuffle=True)\n",
    "\n",
    "    for _ in range(num_epochs):\n",
    "        start = time.time()\n",
    "        for batch_i, (X, y) in enumerate(data_iter):\n",
    "            # 除以2是为了和上面保持一致, 因为pytorch里的MSELoss并没有除以 2\n",
    "            l = loss(net(X).view(-1), y) / 2 \n",
    "\n",
    "            optimizer.zero_grad()\n",
    "            l.backward()\n",
    "            optimizer.step()\n",
    "            if (batch_i + 1) * batch_size % 100 == 0:\n",
    "                ls.append(eval_loss())\n",
    "    # 打印结果和作图\n",
    "    print('loss: %f, %f sec per epoch' % (ls[-1], time.time() - start))\n",
    "    set_figsize()\n",
    "    plt.plot(np.linspace(0, num_epochs, len(ls)), ls)\n",
    "    plt.xlabel('epoch')\n",
    "    plt.ylabel('loss')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss: 0.249597, 0.094973 sec per epoch\n"
     ]
    },
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\r\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
       "  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
       "<!-- Created with matplotlib (https://matplotlib.org/) -->\r\n",
       "<svg height=\"180.65625pt\" version=\"1.1\" viewBox=\"0 0 246.28125 180.65625\" width=\"246.28125pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
       " <defs>\r\n",
       "  <style type=\"text/css\">\r\n",
       "*{stroke-linecap:butt;stroke-linejoin:round;}\r\n",
       "  </style>\r\n",
       " </defs>\r\n",
       " <g id=\"figure_1\">\r\n",
       "  <g id=\"patch_1\">\r\n",
       "   <path d=\"M 0 180.65625 \r\n",
       "L 246.28125 180.65625 \r\n",
       "L 246.28125 0 \r\n",
       "L 0 0 \r\n",
       "z\r\n",
       "\" style=\"fill:none;\"/>\r\n",
       "  </g>\r\n",
       "  <g id=\"axes_1\">\r\n",
       "   <g id=\"patch_2\">\r\n",
       "    <path d=\"M 43.78125 143.1 \r\n",
       "L 239.08125 143.1 \r\n",
       "L 239.08125 7.2 \r\n",
       "L 43.78125 7.2 \r\n",
       "z\r\n",
       "\" style=\"fill:#ffffff;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_1\">\r\n",
       "    <g id=\"xtick_1\">\r\n",
       "     <g id=\"line2d_1\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L 0 3.5 \r\n",
       "\" id=\"mfd1b6f3e54\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"52.658523\" xlink:href=\"#mfd1b6f3e54\" y=\"143.1\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_1\">\r\n",
       "      <!-- 0.0 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 31.78125 66.40625 \r\n",
       "Q 24.171875 66.40625 20.328125 58.90625 \r\n",
       "Q 16.5 51.421875 16.5 36.375 \r\n",
       "Q 16.5 21.390625 20.328125 13.890625 \r\n",
       "Q 24.171875 6.390625 31.78125 6.390625 \r\n",
       "Q 39.453125 6.390625 43.28125 13.890625 \r\n",
       "Q 47.125 21.390625 47.125 36.375 \r\n",
       "Q 47.125 51.421875 43.28125 58.90625 \r\n",
       "Q 39.453125 66.40625 31.78125 66.40625 \r\n",
       "z\r\n",
       "M 31.78125 74.21875 \r\n",
       "Q 44.046875 74.21875 50.515625 64.515625 \r\n",
       "Q 56.984375 54.828125 56.984375 36.375 \r\n",
       "Q 56.984375 17.96875 50.515625 8.265625 \r\n",
       "Q 44.046875 -1.421875 31.78125 -1.421875 \r\n",
       "Q 19.53125 -1.421875 13.0625 8.265625 \r\n",
       "Q 6.59375 17.96875 6.59375 36.375 \r\n",
       "Q 6.59375 54.828125 13.0625 64.515625 \r\n",
       "Q 19.53125 74.21875 31.78125 74.21875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-48\"/>\r\n",
       "       <path d=\"M 10.6875 12.40625 \r\n",
       "L 21 12.40625 \r\n",
       "L 21 0 \r\n",
       "L 10.6875 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-46\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(44.70696 157.698438)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_2\">\r\n",
       "     <g id=\"line2d_2\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"97.044886\" xlink:href=\"#mfd1b6f3e54\" y=\"143.1\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_2\">\r\n",
       "      <!-- 0.5 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 10.796875 72.90625 \r\n",
       "L 49.515625 72.90625 \r\n",
       "L 49.515625 64.59375 \r\n",
       "L 19.828125 64.59375 \r\n",
       "L 19.828125 46.734375 \r\n",
       "Q 21.96875 47.46875 24.109375 47.828125 \r\n",
       "Q 26.265625 48.1875 28.421875 48.1875 \r\n",
       "Q 40.625 48.1875 47.75 41.5 \r\n",
       "Q 54.890625 34.8125 54.890625 23.390625 \r\n",
       "Q 54.890625 11.625 47.5625 5.09375 \r\n",
       "Q 40.234375 -1.421875 26.90625 -1.421875 \r\n",
       "Q 22.3125 -1.421875 17.546875 -0.640625 \r\n",
       "Q 12.796875 0.140625 7.71875 1.703125 \r\n",
       "L 7.71875 11.625 \r\n",
       "Q 12.109375 9.234375 16.796875 8.0625 \r\n",
       "Q 21.484375 6.890625 26.703125 6.890625 \r\n",
       "Q 35.15625 6.890625 40.078125 11.328125 \r\n",
       "Q 45.015625 15.765625 45.015625 23.390625 \r\n",
       "Q 45.015625 31 40.078125 35.4375 \r\n",
       "Q 35.15625 39.890625 26.703125 39.890625 \r\n",
       "Q 22.75 39.890625 18.8125 39.015625 \r\n",
       "Q 14.890625 38.140625 10.796875 36.28125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-53\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(89.093324 157.698438)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_3\">\r\n",
       "     <g id=\"line2d_3\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"141.43125\" xlink:href=\"#mfd1b6f3e54\" y=\"143.1\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_3\">\r\n",
       "      <!-- 1.0 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 12.40625 8.296875 \r\n",
       "L 28.515625 8.296875 \r\n",
       "L 28.515625 63.921875 \r\n",
       "L 10.984375 60.40625 \r\n",
       "L 10.984375 69.390625 \r\n",
       "L 28.421875 72.90625 \r\n",
       "L 38.28125 72.90625 \r\n",
       "L 38.28125 8.296875 \r\n",
       "L 54.390625 8.296875 \r\n",
       "L 54.390625 0 \r\n",
       "L 12.40625 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-49\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(133.479688 157.698438)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_4\">\r\n",
       "     <g id=\"line2d_4\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"185.817614\" xlink:href=\"#mfd1b6f3e54\" y=\"143.1\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_4\">\r\n",
       "      <!-- 1.5 -->\r\n",
       "      <g transform=\"translate(177.866051 157.698438)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-49\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"xtick_5\">\r\n",
       "     <g id=\"line2d_5\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"230.203977\" xlink:href=\"#mfd1b6f3e54\" y=\"143.1\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_5\">\r\n",
       "      <!-- 2.0 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 19.1875 8.296875 \r\n",
       "L 53.609375 8.296875 \r\n",
       "L 53.609375 0 \r\n",
       "L 7.328125 0 \r\n",
       "L 7.328125 8.296875 \r\n",
       "Q 12.9375 14.109375 22.625 23.890625 \r\n",
       "Q 32.328125 33.6875 34.8125 36.53125 \r\n",
       "Q 39.546875 41.84375 41.421875 45.53125 \r\n",
       "Q 43.3125 49.21875 43.3125 52.78125 \r\n",
       "Q 43.3125 58.59375 39.234375 62.25 \r\n",
       "Q 35.15625 65.921875 28.609375 65.921875 \r\n",
       "Q 23.96875 65.921875 18.8125 64.3125 \r\n",
       "Q 13.671875 62.703125 7.8125 59.421875 \r\n",
       "L 7.8125 69.390625 \r\n",
       "Q 13.765625 71.78125 18.9375 73 \r\n",
       "Q 24.125 74.21875 28.421875 74.21875 \r\n",
       "Q 39.75 74.21875 46.484375 68.546875 \r\n",
       "Q 53.21875 62.890625 53.21875 53.421875 \r\n",
       "Q 53.21875 48.921875 51.53125 44.890625 \r\n",
       "Q 49.859375 40.875 45.40625 35.40625 \r\n",
       "Q 44.1875 33.984375 37.640625 27.21875 \r\n",
       "Q 31.109375 20.453125 19.1875 8.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-50\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(222.252415 157.698438)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-50\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"text_6\">\r\n",
       "     <!-- epoch -->\r\n",
       "     <defs>\r\n",
       "      <path d=\"M 56.203125 29.59375 \r\n",
       "L 56.203125 25.203125 \r\n",
       "L 14.890625 25.203125 \r\n",
       "Q 15.484375 15.921875 20.484375 11.0625 \r\n",
       "Q 25.484375 6.203125 34.421875 6.203125 \r\n",
       "Q 39.59375 6.203125 44.453125 7.46875 \r\n",
       "Q 49.3125 8.734375 54.109375 11.28125 \r\n",
       "L 54.109375 2.78125 \r\n",
       "Q 49.265625 0.734375 44.1875 -0.34375 \r\n",
       "Q 39.109375 -1.421875 33.890625 -1.421875 \r\n",
       "Q 20.796875 -1.421875 13.15625 6.1875 \r\n",
       "Q 5.515625 13.8125 5.515625 26.8125 \r\n",
       "Q 5.515625 40.234375 12.765625 48.109375 \r\n",
       "Q 20.015625 56 32.328125 56 \r\n",
       "Q 43.359375 56 49.78125 48.890625 \r\n",
       "Q 56.203125 41.796875 56.203125 29.59375 \r\n",
       "z\r\n",
       "M 47.21875 32.234375 \r\n",
       "Q 47.125 39.59375 43.09375 43.984375 \r\n",
       "Q 39.0625 48.390625 32.421875 48.390625 \r\n",
       "Q 24.90625 48.390625 20.390625 44.140625 \r\n",
       "Q 15.875 39.890625 15.1875 32.171875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-101\"/>\r\n",
       "      <path d=\"M 18.109375 8.203125 \r\n",
       "L 18.109375 -20.796875 \r\n",
       "L 9.078125 -20.796875 \r\n",
       "L 9.078125 54.6875 \r\n",
       "L 18.109375 54.6875 \r\n",
       "L 18.109375 46.390625 \r\n",
       "Q 20.953125 51.265625 25.265625 53.625 \r\n",
       "Q 29.59375 56 35.59375 56 \r\n",
       "Q 45.5625 56 51.78125 48.09375 \r\n",
       "Q 58.015625 40.1875 58.015625 27.296875 \r\n",
       "Q 58.015625 14.40625 51.78125 6.484375 \r\n",
       "Q 45.5625 -1.421875 35.59375 -1.421875 \r\n",
       "Q 29.59375 -1.421875 25.265625 0.953125 \r\n",
       "Q 20.953125 3.328125 18.109375 8.203125 \r\n",
       "z\r\n",
       "M 48.6875 27.296875 \r\n",
       "Q 48.6875 37.203125 44.609375 42.84375 \r\n",
       "Q 40.53125 48.484375 33.40625 48.484375 \r\n",
       "Q 26.265625 48.484375 22.1875 42.84375 \r\n",
       "Q 18.109375 37.203125 18.109375 27.296875 \r\n",
       "Q 18.109375 17.390625 22.1875 11.75 \r\n",
       "Q 26.265625 6.109375 33.40625 6.109375 \r\n",
       "Q 40.53125 6.109375 44.609375 11.75 \r\n",
       "Q 48.6875 17.390625 48.6875 27.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-112\"/>\r\n",
       "      <path d=\"M 30.609375 48.390625 \r\n",
       "Q 23.390625 48.390625 19.1875 42.75 \r\n",
       "Q 14.984375 37.109375 14.984375 27.296875 \r\n",
       "Q 14.984375 17.484375 19.15625 11.84375 \r\n",
       "Q 23.34375 6.203125 30.609375 6.203125 \r\n",
       "Q 37.796875 6.203125 41.984375 11.859375 \r\n",
       "Q 46.1875 17.53125 46.1875 27.296875 \r\n",
       "Q 46.1875 37.015625 41.984375 42.703125 \r\n",
       "Q 37.796875 48.390625 30.609375 48.390625 \r\n",
       "z\r\n",
       "M 30.609375 56 \r\n",
       "Q 42.328125 56 49.015625 48.375 \r\n",
       "Q 55.71875 40.765625 55.71875 27.296875 \r\n",
       "Q 55.71875 13.875 49.015625 6.21875 \r\n",
       "Q 42.328125 -1.421875 30.609375 -1.421875 \r\n",
       "Q 18.84375 -1.421875 12.171875 6.21875 \r\n",
       "Q 5.515625 13.875 5.515625 27.296875 \r\n",
       "Q 5.515625 40.765625 12.171875 48.375 \r\n",
       "Q 18.84375 56 30.609375 56 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-111\"/>\r\n",
       "      <path d=\"M 48.78125 52.59375 \r\n",
       "L 48.78125 44.1875 \r\n",
       "Q 44.96875 46.296875 41.140625 47.34375 \r\n",
       "Q 37.3125 48.390625 33.40625 48.390625 \r\n",
       "Q 24.65625 48.390625 19.8125 42.84375 \r\n",
       "Q 14.984375 37.3125 14.984375 27.296875 \r\n",
       "Q 14.984375 17.28125 19.8125 11.734375 \r\n",
       "Q 24.65625 6.203125 33.40625 6.203125 \r\n",
       "Q 37.3125 6.203125 41.140625 7.25 \r\n",
       "Q 44.96875 8.296875 48.78125 10.40625 \r\n",
       "L 48.78125 2.09375 \r\n",
       "Q 45.015625 0.34375 40.984375 -0.53125 \r\n",
       "Q 36.96875 -1.421875 32.421875 -1.421875 \r\n",
       "Q 20.0625 -1.421875 12.78125 6.34375 \r\n",
       "Q 5.515625 14.109375 5.515625 27.296875 \r\n",
       "Q 5.515625 40.671875 12.859375 48.328125 \r\n",
       "Q 20.21875 56 33.015625 56 \r\n",
       "Q 37.15625 56 41.109375 55.140625 \r\n",
       "Q 45.0625 54.296875 48.78125 52.59375 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-99\"/>\r\n",
       "      <path d=\"M 54.890625 33.015625 \r\n",
       "L 54.890625 0 \r\n",
       "L 45.90625 0 \r\n",
       "L 45.90625 32.71875 \r\n",
       "Q 45.90625 40.484375 42.875 44.328125 \r\n",
       "Q 39.84375 48.1875 33.796875 48.1875 \r\n",
       "Q 26.515625 48.1875 22.3125 43.546875 \r\n",
       "Q 18.109375 38.921875 18.109375 30.90625 \r\n",
       "L 18.109375 0 \r\n",
       "L 9.078125 0 \r\n",
       "L 9.078125 75.984375 \r\n",
       "L 18.109375 75.984375 \r\n",
       "L 18.109375 46.1875 \r\n",
       "Q 21.34375 51.125 25.703125 53.5625 \r\n",
       "Q 30.078125 56 35.796875 56 \r\n",
       "Q 45.21875 56 50.046875 50.171875 \r\n",
       "Q 54.890625 44.34375 54.890625 33.015625 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-104\"/>\r\n",
       "     </defs>\r\n",
       "     <g transform=\"translate(126.203125 171.376563)scale(0.1 -0.1)\">\r\n",
       "      <use xlink:href=\"#DejaVuSans-101\"/>\r\n",
       "      <use x=\"61.523438\" xlink:href=\"#DejaVuSans-112\"/>\r\n",
       "      <use x=\"125\" xlink:href=\"#DejaVuSans-111\"/>\r\n",
       "      <use x=\"186.181641\" xlink:href=\"#DejaVuSans-99\"/>\r\n",
       "      <use x=\"241.162109\" xlink:href=\"#DejaVuSans-104\"/>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"matplotlib.axis_2\">\r\n",
       "    <g id=\"ytick_1\">\r\n",
       "     <g id=\"line2d_6\">\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 0 0 \r\n",
       "L -3.5 0 \r\n",
       "\" id=\"m84d55483ed\" style=\"stroke:#000000;stroke-width:0.8;\"/>\r\n",
       "      </defs>\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m84d55483ed\" y=\"102.007207\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_7\">\r\n",
       "      <!-- 0.4 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 37.796875 64.3125 \r\n",
       "L 12.890625 25.390625 \r\n",
       "L 37.796875 25.390625 \r\n",
       "z\r\n",
       "M 35.203125 72.90625 \r\n",
       "L 47.609375 72.90625 \r\n",
       "L 47.609375 25.390625 \r\n",
       "L 58.015625 25.390625 \r\n",
       "L 58.015625 17.1875 \r\n",
       "L 47.609375 17.1875 \r\n",
       "L 47.609375 0 \r\n",
       "L 37.796875 0 \r\n",
       "L 37.796875 17.1875 \r\n",
       "L 4.890625 17.1875 \r\n",
       "L 4.890625 26.703125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-52\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(20.878125 105.806425)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_2\">\r\n",
       "     <g id=\"line2d_7\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m84d55483ed\" y=\"57.443821\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_8\">\r\n",
       "      <!-- 0.6 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 33.015625 40.375 \r\n",
       "Q 26.375 40.375 22.484375 35.828125 \r\n",
       "Q 18.609375 31.296875 18.609375 23.390625 \r\n",
       "Q 18.609375 15.53125 22.484375 10.953125 \r\n",
       "Q 26.375 6.390625 33.015625 6.390625 \r\n",
       "Q 39.65625 6.390625 43.53125 10.953125 \r\n",
       "Q 47.40625 15.53125 47.40625 23.390625 \r\n",
       "Q 47.40625 31.296875 43.53125 35.828125 \r\n",
       "Q 39.65625 40.375 33.015625 40.375 \r\n",
       "z\r\n",
       "M 52.59375 71.296875 \r\n",
       "L 52.59375 62.3125 \r\n",
       "Q 48.875 64.0625 45.09375 64.984375 \r\n",
       "Q 41.3125 65.921875 37.59375 65.921875 \r\n",
       "Q 27.828125 65.921875 22.671875 59.328125 \r\n",
       "Q 17.53125 52.734375 16.796875 39.40625 \r\n",
       "Q 19.671875 43.65625 24.015625 45.921875 \r\n",
       "Q 28.375 48.1875 33.59375 48.1875 \r\n",
       "Q 44.578125 48.1875 50.953125 41.515625 \r\n",
       "Q 57.328125 34.859375 57.328125 23.390625 \r\n",
       "Q 57.328125 12.15625 50.6875 5.359375 \r\n",
       "Q 44.046875 -1.421875 33.015625 -1.421875 \r\n",
       "Q 20.359375 -1.421875 13.671875 8.265625 \r\n",
       "Q 6.984375 17.96875 6.984375 36.375 \r\n",
       "Q 6.984375 53.65625 15.1875 63.9375 \r\n",
       "Q 23.390625 74.21875 37.203125 74.21875 \r\n",
       "Q 40.921875 74.21875 44.703125 73.484375 \r\n",
       "Q 48.484375 72.75 52.59375 71.296875 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-54\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(20.878125 61.24304)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"ytick_3\">\r\n",
       "     <g id=\"line2d_8\">\r\n",
       "      <g>\r\n",
       "       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m84d55483ed\" y=\"12.880436\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "     <g id=\"text_9\">\r\n",
       "      <!-- 0.8 -->\r\n",
       "      <defs>\r\n",
       "       <path d=\"M 31.78125 34.625 \r\n",
       "Q 24.75 34.625 20.71875 30.859375 \r\n",
       "Q 16.703125 27.09375 16.703125 20.515625 \r\n",
       "Q 16.703125 13.921875 20.71875 10.15625 \r\n",
       "Q 24.75 6.390625 31.78125 6.390625 \r\n",
       "Q 38.8125 6.390625 42.859375 10.171875 \r\n",
       "Q 46.921875 13.96875 46.921875 20.515625 \r\n",
       "Q 46.921875 27.09375 42.890625 30.859375 \r\n",
       "Q 38.875 34.625 31.78125 34.625 \r\n",
       "z\r\n",
       "M 21.921875 38.8125 \r\n",
       "Q 15.578125 40.375 12.03125 44.71875 \r\n",
       "Q 8.5 49.078125 8.5 55.328125 \r\n",
       "Q 8.5 64.0625 14.71875 69.140625 \r\n",
       "Q 20.953125 74.21875 31.78125 74.21875 \r\n",
       "Q 42.671875 74.21875 48.875 69.140625 \r\n",
       "Q 55.078125 64.0625 55.078125 55.328125 \r\n",
       "Q 55.078125 49.078125 51.53125 44.71875 \r\n",
       "Q 48 40.375 41.703125 38.8125 \r\n",
       "Q 48.828125 37.15625 52.796875 32.3125 \r\n",
       "Q 56.78125 27.484375 56.78125 20.515625 \r\n",
       "Q 56.78125 9.90625 50.3125 4.234375 \r\n",
       "Q 43.84375 -1.421875 31.78125 -1.421875 \r\n",
       "Q 19.734375 -1.421875 13.25 4.234375 \r\n",
       "Q 6.78125 9.90625 6.78125 20.515625 \r\n",
       "Q 6.78125 27.484375 10.78125 32.3125 \r\n",
       "Q 14.796875 37.15625 21.921875 38.8125 \r\n",
       "z\r\n",
       "M 18.3125 54.390625 \r\n",
       "Q 18.3125 48.734375 21.84375 45.5625 \r\n",
       "Q 25.390625 42.390625 31.78125 42.390625 \r\n",
       "Q 38.140625 42.390625 41.71875 45.5625 \r\n",
       "Q 45.3125 48.734375 45.3125 54.390625 \r\n",
       "Q 45.3125 60.0625 41.71875 63.234375 \r\n",
       "Q 38.140625 66.40625 31.78125 66.40625 \r\n",
       "Q 25.390625 66.40625 21.84375 63.234375 \r\n",
       "Q 18.3125 60.0625 18.3125 54.390625 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-56\"/>\r\n",
       "      </defs>\r\n",
       "      <g transform=\"translate(20.878125 16.679655)scale(0.1 -0.1)\">\r\n",
       "       <use xlink:href=\"#DejaVuSans-48\"/>\r\n",
       "       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\r\n",
       "       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-56\"/>\r\n",
       "      </g>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "    <g id=\"text_10\">\r\n",
       "     <!-- loss -->\r\n",
       "     <defs>\r\n",
       "      <path d=\"M 9.421875 75.984375 \r\n",
       "L 18.40625 75.984375 \r\n",
       "L 18.40625 0 \r\n",
       "L 9.421875 0 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-108\"/>\r\n",
       "      <path d=\"M 44.28125 53.078125 \r\n",
       "L 44.28125 44.578125 \r\n",
       "Q 40.484375 46.53125 36.375 47.5 \r\n",
       "Q 32.28125 48.484375 27.875 48.484375 \r\n",
       "Q 21.1875 48.484375 17.84375 46.4375 \r\n",
       "Q 14.5 44.390625 14.5 40.28125 \r\n",
       "Q 14.5 37.15625 16.890625 35.375 \r\n",
       "Q 19.28125 33.59375 26.515625 31.984375 \r\n",
       "L 29.59375 31.296875 \r\n",
       "Q 39.15625 29.25 43.1875 25.515625 \r\n",
       "Q 47.21875 21.78125 47.21875 15.09375 \r\n",
       "Q 47.21875 7.46875 41.1875 3.015625 \r\n",
       "Q 35.15625 -1.421875 24.609375 -1.421875 \r\n",
       "Q 20.21875 -1.421875 15.453125 -0.5625 \r\n",
       "Q 10.6875 0.296875 5.421875 2 \r\n",
       "L 5.421875 11.28125 \r\n",
       "Q 10.40625 8.6875 15.234375 7.390625 \r\n",
       "Q 20.0625 6.109375 24.8125 6.109375 \r\n",
       "Q 31.15625 6.109375 34.5625 8.28125 \r\n",
       "Q 37.984375 10.453125 37.984375 14.40625 \r\n",
       "Q 37.984375 18.0625 35.515625 20.015625 \r\n",
       "Q 33.0625 21.96875 24.703125 23.78125 \r\n",
       "L 21.578125 24.515625 \r\n",
       "Q 13.234375 26.265625 9.515625 29.90625 \r\n",
       "Q 5.8125 33.546875 5.8125 39.890625 \r\n",
       "Q 5.8125 47.609375 11.28125 51.796875 \r\n",
       "Q 16.75 56 26.8125 56 \r\n",
       "Q 31.78125 56 36.171875 55.265625 \r\n",
       "Q 40.578125 54.546875 44.28125 53.078125 \r\n",
       "z\r\n",
       "\" id=\"DejaVuSans-115\"/>\r\n",
       "     </defs>\r\n",
       "     <g transform=\"translate(14.798437 84.807812)rotate(-90)scale(0.1 -0.1)\">\r\n",
       "      <use xlink:href=\"#DejaVuSans-108\"/>\r\n",
       "      <use x=\"27.783203\" xlink:href=\"#DejaVuSans-111\"/>\r\n",
       "      <use x=\"88.964844\" xlink:href=\"#DejaVuSans-115\"/>\r\n",
       "      <use x=\"141.064453\" xlink:href=\"#DejaVuSans-115\"/>\r\n",
       "     </g>\r\n",
       "    </g>\r\n",
       "   </g>\r\n",
       "   <g id=\"line2d_9\">\r\n",
       "    <path clip-path=\"url(#pf9ab06b51a)\" d=\"M 52.658523 13.377273 \r\n",
       "L 58.576705 50.013033 \r\n",
       "L 64.494886 74.69304 \r\n",
       "L 70.413068 87.432361 \r\n",
       "L 76.33125 97.814119 \r\n",
       "L 82.249432 105.895415 \r\n",
       "L 88.167614 112.949219 \r\n",
       "L 94.085795 119.502292 \r\n",
       "L 100.003977 125.363655 \r\n",
       "L 105.922159 127.913546 \r\n",
       "L 111.840341 130.14923 \r\n",
       "L 117.758523 130.773998 \r\n",
       "L 123.676705 132.617915 \r\n",
       "L 129.594886 134.536145 \r\n",
       "L 135.513068 135.596786 \r\n",
       "L 141.43125 135.750221 \r\n",
       "L 147.349432 136.023838 \r\n",
       "L 153.267614 136.537713 \r\n",
       "L 159.185795 136.376921 \r\n",
       "L 165.103977 136.615642 \r\n",
       "L 171.022159 136.577403 \r\n",
       "L 176.940341 136.046913 \r\n",
       "L 182.858523 136.160243 \r\n",
       "L 188.776705 136.736701 \r\n",
       "L 194.694886 136.302013 \r\n",
       "L 200.613068 136.922727 \r\n",
       "L 206.53125 136.029456 \r\n",
       "L 212.449432 136.887948 \r\n",
       "L 218.367614 136.388147 \r\n",
       "L 224.285795 136.642164 \r\n",
       "L 230.203977 135.519508 \r\n",
       "\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_3\">\r\n",
       "    <path d=\"M 43.78125 143.1 \r\n",
       "L 43.78125 7.2 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_4\">\r\n",
       "    <path d=\"M 239.08125 143.1 \r\n",
       "L 239.08125 7.2 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_5\">\r\n",
       "    <path d=\"M 43.78125 143.1 \r\n",
       "L 239.08125 143.1 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "   <g id=\"patch_6\">\r\n",
       "    <path d=\"M 43.78125 7.2 \r\n",
       "L 239.08125 7.2 \r\n",
       "\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\r\n",
       "   </g>\r\n",
       "  </g>\r\n",
       " </g>\r\n",
       " <defs>\r\n",
       "  <clipPath id=\"pf9ab06b51a\">\r\n",
       "   <rect height=\"135.9\" width=\"195.3\" x=\"43.78125\" y=\"7.2\"/>\r\n",
       "  </clipPath>\r\n",
       " </defs>\r\n",
       "</svg>\r\n"
      ],
      "text/plain": [
       "<Figure size 252x180 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_model_pytorch(torch.optim.RMSprop,{'lr':0.01, 'alpha':0.9},\n",
    "                   features, labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 小结\n",
    "RMSProp优化算法和AdaGrad算法的不同在于，RMSProp算法使用了小批量随机梯度按元素平方的指数加权移动平均来调整学习率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "yczlab",
   "language": "python",
   "name": "yczlab"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
